package com.liu.yubi.utils;

import cn.hutool.core.text.StrBuilder;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

/**
 * @author lqh
 * @since 2025-07-07 23:27
 * 处理AI生成数据工具类
 */
@Slf4j
public class AiUtils {
    /**
     * 构造用户输入
     */
    public static String AIInputMessage(String goal, String chartType, String csvData) {
        //构造AI预设
        StrBuilder AIRequest = new StrBuilder ();
        //分析需求
        AIRequest.append ("分析需求:").append ("\n");
        AIRequest.append (goal).append ("\n");
        if (StringUtils.isNotBlank (chartType)) {
            AIRequest.append (",使用").append (chartType).append ("\n");
        }

        AIRequest.append ("原始数据:").append ("\n");
        AIRequest.append (csvData).append ("\n");
        //打印日志
        log.info ("用户输入诉求:{}", goal);
        //返回结果
        return AIRequest.toString ();
    }

    /**
     * AI生成JS代码
     */
    public static String extractJsCode(String genResult) {
        //划分结果
        String[] split = genResult.split ("【【【【【");
        if (split.length>=3){
            return split[1].trim ();
        }
        return "";

    }

    /**
     * Ai生成结论
     */
    public static String extractAnalysis(String genResult) {
        //划分结果
        String[] split = genResult.split ("【【【【【");
        if (split.length>=3){
            return split[2].trim ();
        }
        return "";
    }

    /**
     * 生成代码转为json格式
     */
    public static String genCodeToJson(String genCode) {
        // 处理属性名：给不带引号的属性名加双引号，如 xAxis: -> "xAxis":
        String step1 = genCode.replaceAll("(['\"])?([a-zA-Z0-9_]+)(['\"])?:", "\"$2\":");
        // 处理值里的单引号：转为双引号，如 'category' -> "category"
        String step2 = step1.replaceAll("'", "\"");
        // 处理可能的其他非法字符（可选，根据实际情况加）
        return step2;
    }


}
